package co.edu.udea.herbario.dao;

import co.edu.udea.herbario.dto.Familia;
import java.util.List;

/**
 *Clase de tipo interface que contiene la declaracion de los metodos utilizados para gestionar
 * los datos de la tabla Herb_Familias entre la persistencia y la logica de la aplicacion
 *
 * @author Alejandro Areiza, Lorena Orozco, Marcela Colorado
 */
public interface FamiliaDao
{
    /**
	 * Metodo que obtiene desde la tabla Herb_Familias el elemento referenciado con el codigo indicado
	 * como parametro
	 *
	 * @param codigo es el codigo que identifica la familia dentro del sistema
	 *
	 * @return retorna un objeto de tipo Familia
	 */
	public Familia obtenerFamilia(int codigo);

    /**
	 * Metodo para obtener de la tabla Herb_Familias el registro correspondiente al nombre de la familia,
	 * el cual se entrega como parametro de entrada
	 *
	 * @param fami es el nombre de una familia
	 *
	 * @return retorna un objeto de tipo Familia
	 */
	public Familia obtenerFamiliaPorNombre(String fami);

    /**
	 * Este metodo es el encargado de entregar en una lista los nombres de todas las familias registradas
     * en el sistema
     *
     * @param valorBusqueda es la cadena de caracteres para la busqueda de las familias
	 *
	 * @return retorna una lista con los nombres de las familias
	 */
    public List<String> obtenerNombresFamilias(String valorBusqueda);

    /**
	 * Metodo para crear un elemento dentro de la tabla Herb_Familias
	 *
	 * @param familia es un objeto de tipo Familia que contiene los datos del elemento que se desea
	 * ingresar en la tabla Herb_Familias
	 *
	 * @return retorna un entero: res = 1 si se realizo correctamente la creacion, de lo contrario res = -1
	 */
	public int crearFamilia(Familia familia);

    /**
	 * Metodo para llevar a cabo el proceso de modificacion de los datos asociados a una familia
	 *
	 * @param familia es un objeto de tipo Familia que contiene los datos del elemento que se desea
	 * modificar en la tabla Herb_Familias
	 *
	 * @return retorna un entero: res = 1 si se realizo correctamente la modificacion, de lo contrario res = -1
	 */
    public int actualizarFamilia(Familia familia);
}
